home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / tree / DefaultTreeModel.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  6.4 KB  |  302 lines

  1. package javax.swing.tree;
  2.  
  3. import java.io.IOException;
  4. import java.io.ObjectInputStream;
  5. import java.io.ObjectOutputStream;
  6. import java.io.Serializable;
  7. import java.util.Vector;
  8. import javax.swing.event.EventListenerList;
  9. import javax.swing.event.TreeModelEvent;
  10. import javax.swing.event.TreeModelListener;
  11.  
  12. public class DefaultTreeModel implements Serializable, TreeModel {
  13.    protected TreeNode root;
  14.    protected EventListenerList listenerList;
  15.    protected boolean asksAllowsChildren;
  16.    // $FF: synthetic field
  17.    static Class class$javax$swing$event$TreeModelListener;
  18.  
  19.    public DefaultTreeModel(TreeNode var1) {
  20.       this(var1, false);
  21.    }
  22.  
  23.    public DefaultTreeModel(TreeNode var1, boolean var2) {
  24.       this.listenerList = new EventListenerList();
  25.       if (var1 == null) {
  26.          throw new IllegalArgumentException("root is null");
  27.       } else {
  28.          this.root = var1;
  29.          this.asksAllowsChildren = var2;
  30.       }
  31.    }
  32.  
  33.    public void addTreeModelListener(TreeModelListener var1) {
  34.       this.listenerList.add(class$javax$swing$event$TreeModelListener != null ? class$javax$swing$event$TreeModelListener : (class$javax$swing$event$TreeModelListener = class$("javax.swing.event.TreeModelListener")), var1);
  35.    }
  36.  
  37.    public boolean asksAllowsChildren() {
  38.       return this.asksAllowsChildren;
  39.    }
  40.  
  41.    // $FF: synthetic method
  42.    static Class class$(String var0) {
  43.       try {
  44.          return Class.forName(var0);
  45.       } catch (ClassNotFoundException var2) {
  46.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  47.       }
  48.    }
  49.  
  50.    protected void fireTreeNodesChanged(Object var1, Object[] var2, int[] var3, Object[] var4) {
  51.       Object[] var5 = this.listenerList.getListenerList();
  52.       TreeModelEvent var6 = null;
  53.  
  54.       for(int var7 = var5.length - 2; var7 >= 0; var7 -= 2) {
  55.          if (var5[var7] == (class$javax$swing$event$TreeModelListener != null ? class$javax$swing$event$TreeModelListener : (class$javax$swing$event$TreeModelListener = class$("javax.swing.event.TreeModelListener")))) {
  56.             if (var6 == null) {
  57.                var6 = new TreeModelEvent(var1, var2, var3, var4);
  58.             }
  59.  
  60.             ((TreeModelListener)var5[var7 + 1]).treeNodesChanged(var6);
  61.          }
  62.       }
  63.  
  64.    }
  65.  
  66.    protected void fireTreeNodesInserted(Object var1, Object[] var2, int[] var3, Object[] var4) {
  67.       Object[] var5 = this.listenerList.getListenerList();
  68.       TreeModelEvent var6 = null;
  69.  
  70.       for(int var7 = var5.length - 2; var7 >= 0; var7 -= 2) {
  71.          if (var5[var7] == (class$javax$swing$event$TreeModelListener != null ? class$javax$swing$event$TreeModelListener : (class$javax$swing$event$TreeModelListener = class$("javax.swing.event.TreeModelListener")))) {
  72.             if (var6 == null) {
  73.                var6 = new TreeModelEvent(var1, var2, var3, var4);
  74.             }
  75.  
  76.             ((TreeModelListener)var5[var7 + 1]).treeNodesInserted(var6);
  77.          }
  78.       }
  79.  
  80.    }
  81.  
  82.    protected void fireTreeNodesRemoved(Object var1, Object[] var2, int[] var3, Object[] var4) {
  83.       Object[] var5 = this.listenerList.getListenerList();
  84.       TreeModelEvent var6 = null;
  85.  
  86.       for(int var7 = var5.length - 2; var7 >= 0; var7 -= 2) {
  87.          if (var5[var7] == (class$javax$swing$event$TreeModelListener != null ? class$javax$swing$event$TreeModelListener : (class$javax$swing$event$TreeModelListener = class$("javax.swing.event.TreeModelListener")))) {
  88.             if (var6 == null) {
  89.                var6 = new TreeModelEvent(var1, var2, var3, var4);
  90.             }
  91.  
  92.             ((TreeModelListener)var5[var7 + 1]).treeNodesRemoved(var6);
  93.          }
  94.       }
  95.  
  96.    }
  97.  
  98.    protected void fireTreeStructureChanged(Object var1, Object[] var2, int[] var3, Object[] var4) {
  99.       Object[] var5 = this.listenerList.getListenerList();
  100.       TreeModelEvent var6 = null;
  101.  
  102.       for(int var7 = var5.length - 2; var7 >= 0; var7 -= 2) {
  103.          if (var5[var7] == (class$javax$swing$event$TreeModelListener != null ? class$javax$swing$event$TreeModelListener : (class$javax$swing$event$TreeModelListener = class$("javax.swing.event.TreeModelListener")))) {
  104.             if (var6 == null) {
  105.                var6 = new TreeModelEvent(var1, var2, var3, var4);
  106.             }
  107.  
  108.             ((TreeModelListener)var5[var7 + 1]).treeStructureChanged(var6);
  109.          }
  110.       }
  111.  
  112.    }
  113.  
  114.    public Object getChild(Object var1, int var2) {
  115.       return ((TreeNode)var1).getChildAt(var2);
  116.    }
  117.  
  118.    public int getChildCount(Object var1) {
  119.       return ((TreeNode)var1).getChildCount();
  120.    }
  121.  
  122.    public int getIndexOfChild(Object var1, Object var2) {
  123.       return var1 != null && var2 != null ? ((TreeNode)var1).getIndex((TreeNode)var2) : 0;
  124.    }
  125.  
  126.    public TreeNode[] getPathToRoot(TreeNode var1) {
  127.       return this.getPathToRoot(var1, 0);
  128.    }
  129.  
  130.    protected TreeNode[] getPathToRoot(TreeNode var1, int var2) {
  131.       TreeNode[] var3;
  132.       if (var1 == null) {
  133.          if (var2 == 0) {
  134.             return null;
  135.          }
  136.  
  137.          var3 = new TreeNode[var2];
  138.       } else {
  139.          ++var2;
  140.          if (var1 == this.root) {
  141.             var3 = new TreeNode[var2];
  142.          } else {
  143.             var3 = this.getPathToRoot(var1.getParent(), var2);
  144.          }
  145.  
  146.          var3[var3.length - var2] = var1;
  147.       }
  148.  
  149.       return var3;
  150.    }
  151.  
  152.    public Object getRoot() {
  153.       return this.root;
  154.    }
  155.  
  156.    public void insertNodeInto(MutableTreeNode var1, MutableTreeNode var2, int var3) {
  157.       var2.insert(var1, var3);
  158.       int[] var4 = new int[]{var3};
  159.       this.nodesWereInserted(var2, var4);
  160.    }
  161.  
  162.    public boolean isLeaf(Object var1) {
  163.       return this.asksAllowsChildren ? ((TreeNode)var1).getAllowsChildren() ^ true : ((TreeNode)var1).isLeaf();
  164.    }
  165.  
  166.    public void nodeChanged(TreeNode var1) {
  167.       if (this.listenerList != null && var1 != null) {
  168.          TreeNode var2 = var1.getParent();
  169.          if (var2 != null) {
  170.             int var3 = var2.getIndex(var1);
  171.             if (var3 != -1) {
  172.                int[] var4 = new int[]{var3};
  173.                this.nodesChanged(var2, var4);
  174.             }
  175.          } else if (var1 == this.getRoot()) {
  176.             this.nodesChanged(var1, (int[])null);
  177.          }
  178.       }
  179.  
  180.    }
  181.  
  182.    public void nodeStructureChanged(TreeNode var1) {
  183.       if (var1 != null) {
  184.          this.fireTreeStructureChanged(this, this.getPathToRoot(var1), (int[])null, (Object[])null);
  185.       }
  186.  
  187.    }
  188.  
  189.    public void nodesChanged(TreeNode var1, int[] var2) {
  190.       if (var1 != null) {
  191.          if (var2 != null) {
  192.             int var3 = var2.length;
  193.             if (var3 > 0) {
  194.                Object[] var4 = new Object[var3];
  195.  
  196.                for(int var5 = 0; var5 < var3; ++var5) {
  197.                   var4[var5] = var1.getChildAt(var2[var5]);
  198.                }
  199.  
  200.                this.fireTreeNodesChanged(this, this.getPathToRoot(var1), var2, var4);
  201.             }
  202.          } else if (var1 == this.getRoot()) {
  203.             this.fireTreeNodesChanged(this, this.getPathToRoot(var1), (int[])null, (Object[])null);
  204.          }
  205.       }
  206.  
  207.    }
  208.  
  209.    public void nodesWereInserted(TreeNode var1, int[] var2) {
  210.       if (this.listenerList != null && var1 != null && var2 != null && var2.length > 0) {
  211.          int var3 = var2.length;
  212.          Object[] var4 = new Object[var3];
  213.  
  214.          for(int var5 = 0; var5 < var3; ++var5) {
  215.             var4[var5] = var1.getChildAt(var2[var5]);
  216.          }
  217.  
  218.          this.fireTreeNodesInserted(this, this.getPathToRoot(var1), var2, var4);
  219.       }
  220.  
  221.    }
  222.  
  223.    public void nodesWereRemoved(TreeNode var1, int[] var2, Object[] var3) {
  224.       if (var1 != null && var2 != null) {
  225.          this.fireTreeNodesRemoved(this, this.getPathToRoot(var1), var2, var3);
  226.       }
  227.  
  228.    }
  229.  
  230.    private void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
  231.       var1.defaultReadObject();
  232.       Vector var2 = (Vector)var1.readObject();
  233.       int var3 = 0;
  234.       int var4 = var2.size();
  235.       if (var3 < var4 && var2.elementAt(var3).equals("root")) {
  236.          ++var3;
  237.          this.root = (TreeNode)var2.elementAt(var3);
  238.          ++var3;
  239.       }
  240.  
  241.    }
  242.  
  243.    public void reload() {
  244.       this.reload(this.root);
  245.    }
  246.  
  247.    public void reload(TreeNode var1) {
  248.       if (var1 != null) {
  249.          this.fireTreeStructureChanged(this, this.getPathToRoot(var1), (int[])null, (Object[])null);
  250.       }
  251.  
  252.    }
  253.  
  254.    public void removeNodeFromParent(MutableTreeNode var1) {
  255.       MutableTreeNode var2 = (MutableTreeNode)var1.getParent();
  256.       if (var2 == null) {
  257.          throw new IllegalArgumentException("node does not have a parent.");
  258.       } else {
  259.          int[] var3 = new int[1];
  260.          Object[] var4 = new Object[1];
  261.          var3[0] = var2.getIndex(var1);
  262.          var2.remove(var3[0]);
  263.          var4[0] = var1;
  264.          this.nodesWereRemoved(var2, var3, var4);
  265.       }
  266.    }
  267.  
  268.    public void removeTreeModelListener(TreeModelListener var1) {
  269.       this.listenerList.remove(class$javax$swing$event$TreeModelListener != null ? class$javax$swing$event$TreeModelListener : (class$javax$swing$event$TreeModelListener = class$("javax.swing.event.TreeModelListener")), var1);
  270.    }
  271.  
  272.    public void setAsksAllowsChildren(boolean var1) {
  273.       this.asksAllowsChildren = var1;
  274.    }
  275.  
  276.    public void setRoot(TreeNode var1) {
  277.       if (var1 == null) {
  278.          throw new IllegalArgumentException("Root of tree is not allowed to be null");
  279.       } else {
  280.          this.root = var1;
  281.          this.nodeStructureChanged(var1);
  282.       }
  283.    }
  284.  
  285.    public void valueForPathChanged(TreePath var1, Object var2) {
  286.       MutableTreeNode var3 = (MutableTreeNode)var1.getLastPathComponent();
  287.       var3.setUserObject(var2);
  288.       this.nodeChanged(var3);
  289.    }
  290.  
  291.    private void writeObject(ObjectOutputStream var1) throws IOException {
  292.       Vector var2 = new Vector();
  293.       var1.defaultWriteObject();
  294.       if (this.root != null && this.root instanceof Serializable) {
  295.          var2.addElement("root");
  296.          var2.addElement(this.root);
  297.       }
  298.  
  299.       var1.writeObject(var2);
  300.    }
  301. }
  302.